home *** CD-ROM | disk | FTP | other *** search
/ PCMania 73 / PCMania CD73_1.iso / pcmania / render73 / Foro / FUERTES / SUB_MK2 / SSB_MK2.INC < prev   
Text File  |  1998-08-05  |  19KB  |  799 lines

  1. //#declare compuertas_abiertas=0 --> abre las compuertas
  2. //#declare disparo=3000 --> dispara cañon hasta una distancia de 3000
  3.  
  4. #ifndef (madera)
  5.         #include "marina.tex"
  6. #end
  7.  
  8. #ifndef (rotacion)
  9.         #declare rotacion=0 //cañon mirando hacia popa
  10. #end
  11.  
  12. #declare casco_b1=
  13. union
  14. {
  15.  sphere
  16.  {
  17.   0,20
  18.   scale <1.5,1,1>
  19.   clipped_by {plane {x,0}}
  20.  }
  21.  sphere
  22.  {
  23.   0,20
  24.   scale <4.5,1,1>
  25.   clipped_by {plane {-x,0}}
  26.   translate x*100
  27.  }
  28.  cylinder {<0,0,0>,<100,0,0>,20}
  29. }
  30.  
  31. #declare lamina_casco_b=
  32. difference
  33. {
  34.  object{ casco_b1}
  35.  box {<-31,0,21>,<201,-21,-21>}
  36.  box {<-31,21,21>,<201,0,-21> rotate x*29}
  37.  bounded_by {box {<-31,15,21>,<201,-1,-21>}}
  38. }
  39.  
  40. #declare refuerzos_casco_b=
  41. union
  42. {
  43.  difference //proa
  44.  {
  45.   sphere {0,20.5 scale <1.5,1,1> clipped_by {plane {x,0}}}
  46.   sphere {<0,20,-20>,20.5}
  47.   sphere {<0,20,20>,20.5}
  48.   sphere {<0,-20,20>,20.5}
  49.   sphere {<0,-20,-20>,20.5}
  50.   bounded_by {box {<-31,21,21>,<1,-21,-21>}}
  51.  }
  52.  cylinder {<30,0,0>,<35,0,0>,20.3} //1er refuerzo
  53.  cylinder {<0,0,0>,<5,0,0>,20.3} //2er refuerzo
  54.  cylinder {<65,0,0>,<70,0,0>,20.3} //3o refuerzo
  55.  cylinder {<95,0,0>,<100,0,0>,20.3} //4o refuerzo
  56.  difference //refuerzo y popa
  57.  {
  58.   sphere
  59.   {
  60.    0,20.3
  61.    scale <4.5,1,1>
  62.    clipped_by {plane {-x,0}}
  63.    translate x*100
  64.   }
  65.   box {<125,21,21>,<0,-21,-21>}
  66.   box {<130,21,21>,<150,-21,-21>}
  67.  }
  68.  #declare aa=15 //remaches
  69.  #while (aa<360)
  70.    sphere {0,1.5 scale <1,.75,1> translate <2.5,20.3,0> rotate x*aa}
  71.    sphere {0,1.5 scale <1,.75,1> translate <32.5,20.3,0> rotate x*aa}
  72.    sphere {0,1.5 scale <1,.75,1> translate <67.5,20.3,0> rotate x*aa}
  73.    sphere {0,1.5 scale <1,.75,1> translate <97.5,20.3,0> rotate x*aa}
  74.    sphere {0,1.5 scale <1,.75,1> translate <127.5,19,0> rotate x*aa}
  75.    sphere {0,1.5 scale <1,.75,1> translate <152,16,0> rotate x*aa}
  76.    #declare aa=aa+30
  77.  #end
  78.  sphere {0,1.5 scale <1,.75,1> translate <-15,18,0> }
  79.  sphere {0,1.5 scale <1,.75,1> translate <-15,18,0> rotate x*90}
  80.  sphere {0,1.5 scale <1,.75,1> translate <-15,18,0> rotate x*190}
  81.  sphere {0,1.5 scale <1,.75,1> translate <-15,18,0> rotate x*270}
  82.  texture{metal}
  83. }
  84.  
  85. #declare espolon_b=
  86. union
  87. {
  88.  cone {<-20,0,0>,12.5,<-45,0,0>,2}
  89.  cone {<-50,0,0>,5,<-45,0,0>,2}
  90.  cone {<-50,0,0>,5,<-85,0,0>,0}
  91.  prism
  92.  {
  93.   linear_spline .15,-.15 12
  94.   <-30,0>,<-20,35>,<-35,10>,<-25,40>,<-50,10>,<-65,5>,<-50,25>,<-83,0>,<-35,-15>,
  95.   <-37,-10>,<-20,-20>,<-30,0> rotate x*-90
  96.  }
  97.  prism
  98.  {
  99.   linear_spline .15,-.15 9
  100.   <-30,0>,<-20,20>,<-35,10>,<-35,15>,<-83,0>,<-35,-15>,<-35,-10>,<-20,-20>,<-30,0>
  101.  }
  102.  prism
  103.  {
  104.   linear_spline .15,-.15 9
  105.   <-30,0>,<-20,20>,<-35,10>,<-35,15>,<-83,0>,<-35,-15>,<-35,-10>,<-20,-20>,<-30,0>
  106.   rotate x*45
  107.  }
  108.  prism
  109.  {
  110.   linear_spline .15,-.15 9
  111.   <-30,0>,<-20,20>,<-35,10>,<-35,15>,<-83,0>,<-35,-15>,<-35,-10>,<-20,-20>,<-30,0>
  112.   rotate x*-45
  113.  }
  114.  texture {metal}
  115. }
  116.  
  117. #declare aleta1_b=
  118. difference
  119. {
  120.  union
  121.  {
  122.   cylinder { <0,0,.3>,<0,0,-.3>,29 }
  123.   cylinder { <0,.3,0>,<0,-.3,0>,29 }
  124.  }
  125.  box {<0,41,-41>,<41,-41,41>}
  126.  texture {madera}
  127. }
  128.  
  129. #declare refuerzos_aleta_b=
  130. union
  131. {
  132.  difference
  133.  {
  134.   difference
  135.   {
  136.    cylinder {<0,0,.5>,<0,0,-.5>,30}
  137.    cylinder {<0,0,.6>,<0,0,-.6>,28}
  138.   }
  139.   box {<0,41,-41>,<41,-41,41>}
  140.  }
  141.  sphere {<-29,0,.5>,.5 rotate z*45}
  142.  sphere {<-29,0,.5>,.5 rotate z*-45}
  143.  sphere {<-29,0,.5>,.5 rotate z*88}
  144.  sphere {<-29,0,.5>,.5 rotate z*-88}
  145.  sphere {<-29,0,-.5>,.5 rotate z*45}
  146.  sphere {<-29,0,-.5>,.5 rotate z*-45}
  147.  sphere {<-29,0,-.5>,.5 rotate z*88}
  148.  sphere {<-29,0,-.5>,.5 rotate z*-88}
  149.  texture {metal}
  150. }
  151.  
  152. #declare timones_b=
  153. union
  154. {
  155.  box {<-4,35,.5>,<0.001,-35,-.5>} //refuerzo
  156.  sphere {<-2.5,22.5,-.5>,.6} //remaches
  157.  sphere {<-2.5,-22.5,-.5>,.6} //remaches
  158.  sphere {<-2.5,22.5,.5>,.6} //remaches
  159.  sphere {<-2.5,-22.5,.5>,.6} //remaches
  160.  box {<-3,30,.65>,<3,34,-.65>} //bisagras
  161.  box {<-3,19,.65>,<3,15,-.65>} //bisagras
  162.  box {<-3,-30,.65>,<3,-34,-.65>} //bisagras
  163.  box {<-3,-19,.65>,<3,-15,-.65>} //bisagras
  164.  cylinder {<0,30,0>,<0,34,0>,1.5} //bisagras
  165.  cylinder {<0,19,0>,<0,15,0>,1.5} //bisagras
  166.  cylinder {<0,-30,0>,<0,-34,0>,1.5} //bisagras
  167.  cylinder {<0,-19,0>,<0,-15,0>,1.5} //bisagras
  168.  box {<1,38,.4>,<10,13,-.4>}
  169.  box {<1,-38,.4>,<10,-13,-.4>}
  170.  texture {metal}
  171. }
  172.  
  173. #declare mandos_b=
  174. union
  175. {
  176.  box {<1,19.9,7>,<2,20.1,-7>}
  177.  cylinder {<1.5,20,6.5>,<-50,10,5>,.1}
  178.  cylinder {<1.5,20,-6.5>,<-50,10,-5>,.1}
  179.  texture {metal}
  180. }
  181.  
  182. #declare aleta_b=
  183. union
  184. {
  185.  union
  186.  {
  187.   object {refuerzos_aleta_b}
  188.   object {refuerzos_aleta_b rotate x*90}
  189.   object {aleta1_b}
  190.   scale <1,1.3,1.3>
  191.  }
  192.  object {timones_b}
  193.  object {timones_b rotate x*90}
  194.  object {mandos_b}
  195.  object {mandos_b rotate x*90}
  196.  object {mandos_b rotate x*180}
  197.  object {mandos_b rotate x*270}
  198.  translate x*180
  199. }
  200.  
  201. #declare pala_b=
  202. union
  203. {
  204.  box {<-3,2,.2>,<3,14,-.2> texture {madera}}
  205.  box {<-2.5,1,.3>,<-4,15,-.3> texture {metal}}
  206.  box {<2.5,1,.3>,<4,15,-.3> texture {metal}}
  207.  box {<4,14,.3>,<-4,15,-.3> texture {metal}}
  208.  box {<4,1,.3>,<-4,2,-.3> texture {metal}}
  209. }
  210.  
  211. #declare helice_b=
  212. union
  213. {
  214.  #declare aa=0
  215.  #while (aa<360)
  216.   object {pala_b rotate y*45 rotate x*aa translate x*195}
  217.   #declare aa=aa+45
  218.  #end
  219.  difference
  220.  {
  221.   cylinder {<194.5,0,0>,<195.5,0,0>,15.5}
  222.   cylinder {<191,0,0>,<198,0,0>,15}
  223.   texture {metal}
  224.  }
  225. }
  226.  
  227. #declare torreta1_b=
  228. difference
  229. {
  230.  union
  231.  {
  232.   cylinder {<-10,0,0>,<-10,15,0>,10}
  233.   box {<-10,0,10>,<0,15,-10>}
  234.  }
  235.  union
  236.  {
  237.   box {<-10,-1,-11>,<-10.2,16,11>}
  238.   box {<-21,-1,.1>,<1,16,-.1>}
  239.   cylinder {<-10,8,0>,<-22,8,0>,3.5}
  240.   cylinder {<-10,8,11>,<-10,8,-11>,3.5}
  241.   pigment {rgb 0}
  242.  }
  243.  texture {madera}
  244. }
  245.  
  246. #declare refuerzos_torreta_b=
  247. union
  248. {
  249.  cylinder {<-10,-5,0>,<-10,2,0>,11}
  250.  box {<-10,-5,11>,<0,2,-11>}
  251.  #declare aa=0
  252.  #while (aa<181)
  253.    sphere {<0,1,-11>,1 rotate y*aa translate x*-10}
  254.    #declare aa=aa+45
  255.  #end
  256.  sphere {<-5,1,11>,1}
  257.  sphere {<-5,1,-11>,1}
  258.  texture {metal}
  259. }
  260.  
  261. #declare ojo_de_buey_b=
  262. union
  263. {
  264.   difference
  265.   {
  266.     cylinder {<-8,8,0>,<-12,8,0>,4}
  267.     cylinder {<1,8,0>,<-13,8,0>,3}
  268.   }
  269.   torus {4,.1 rotate z*90 translate <-11,8,0> pigment {rgb 0}}
  270.   sphere {<-12,11.5,0>,.5}
  271.   sphere {<-12,4.5,0>,.5}
  272.   sphere {<-12,8,3.5>,.5}
  273.   sphere {<-12,8,-3.5>,.5}
  274.   sphere {0,3 scale <.2,1,1> translate <-10.5,8,0>
  275.           pigment {rgbt <1,1,1,.5>} finish {reflection .6 specular 1 diffuse 0}}
  276.   texture {metal}
  277. }
  278.  
  279. #declare torreta2_b=
  280. union
  281. {
  282.  cylinder {<0,-5,0>,<0,15,0>,10.1 clipped_by {plane {-x,0}}}
  283.  sphere {<0,13,-10.1>,1 rotate y*-10}
  284.  sphere {<0,13,10.1>,1 rotate y*10}
  285.  sphere {<0,4,-10.1>,1 rotate y*-10}
  286.  sphere {<0,4,10.1>,1 rotate y*10}
  287.  texture {metal}
  288. }
  289.  
  290. #declare escotilla_torreta_b=
  291. union
  292. {
  293.  cylinder {<5,10,0>,<5,16,0>,5}
  294.  #declare aa=0
  295.  #while (aa<360)
  296.    sphere {<0,0,4.5>,.5 rotate y*aa translate <5,16,0>}
  297.    #declare aa=aa+45
  298.  #end
  299.  sphere {0,4 scale <1,.25,1> translate <5,16,0>}
  300.  cylinder {<5,10,0>,<5,18.5,0>,.2}
  301.  cylinder {<5,18,1.5>,<5,18,-1.5>,.2}
  302.  cylinder {<3.5,18,0>,<6.5,18,0>,.2}
  303.  torus {1.5,.2 translate <5,18,0>}
  304.  
  305.  box {<7,16,1>,<11,17.5,1.1>}
  306.  box {<7,16,-1>,<11,17.5,-1.1>}
  307.  box {<10,18,.9>,<11,10,.8>}
  308.  box {<10,18,-.9>,<11,10,-.8>}
  309.  cylinder {<10.5,16.5,-1.2>,<10.5,16.5,1.2>,.4}
  310.  
  311.  texture {metal}
  312. }
  313.  
  314. #declare puente_b=
  315. union
  316. {
  317.  box {<0,15,3>,<-10,16,-3>} //piso
  318.  cylinder {<-10,15,0>,<-10,16,0>,3} //piso
  319.  
  320.  torus {10,1 clipped_by {plane {x,0}} translate <-10,15,0>}
  321.  cylinder {<0,15,-10>,<-10,15,-10>,1}
  322.  sphere {<0,15,-10>,1}
  323.  cylinder {<0,15,10>,<-10,15,10>,1}
  324.  sphere {<0,15,10>,1}
  325.  
  326.  prism {linear_spline -10,-11 6 <0,15>,<0,20>,<-5,25>,<-10,25>,<-10,15>,<0,15> rotate x*-90}
  327.  prism {linear_spline 10,11 6 <0,15>,<0,20>,<-5,25>,<-10,25>,<-10,15>,<0,15> rotate x*-90}
  328.  difference
  329.  {
  330.   cylinder {<-10,15,0>,<-10,25,0>,11}
  331.   cylinder {<-10,14,0>,<-10,26,0>,10}
  332.   box {<-10,13,12>,<3,27,-12>}
  333.  }
  334.  
  335.  torus {10,1 clipped_by {plane {x,0}} translate <-10,25,0>}
  336.  cylinder {<-5,25,-10>,<-10,25,-10>,1}
  337.  cylinder {<-5,25,10>,<-10,25,10>,1}
  338.  
  339.  box {<0,15,-9>,<-2,20,-10>}
  340.  box {<0,15,9>,<-2,20,10>}
  341.  box {<-10,15,-9>,<-8,25,-10>}
  342.  box {<-10,15,9>,<-8,25,10>}
  343.  box {<-19.5,15,1>,<-18,25,-1>}
  344.  
  345.  texture {metal}
  346. }
  347.  
  348. #declare torreta_b=
  349. union
  350. {
  351.  object {torreta1_b}
  352.  object {refuerzos_torreta_b}
  353.  object {torreta2_b}
  354.  object {puente_b}
  355.  object {escotilla_torreta_b}
  356.  object {ojo_de_buey_b translate x*-10}
  357.  object {ojo_de_buey_b rotate y*90 translate x*-10}
  358.  object {ojo_de_buey_b rotate y*-90 translate x*-10}
  359. }
  360.  
  361. #declare escotilla_b=
  362. union
  363. {
  364.  cylinder {<0,0,0>,<0,22,0>,8.1}
  365.  cylinder {<0,0,0>,<0,22.1,0>,8}
  366.  #declare aa=0
  367.  #while (aa<360)
  368.   sphere {<0,22.1,7.5>,.5 rotate y*aa}
  369.   #declare aa=aa+30
  370.  #end
  371.  sphere {0,7 scale <1,.25,1> translate y*22.1}
  372.  cylinder {<0,20,0>,<0,24.5,0>,.2}
  373.  cylinder {<-3,24,0>,<3,24,0>,.2}
  374.  cylinder {<0,24,-3>,<0,24,3>,.2}
  375.  torus {3,.2 translate <0,24,0>}
  376.  
  377.  box {<4,23,2>,<10,22,2.2>}
  378.  box {<4,23,-2>,<10,22,-2.2>}
  379.  box {<8.2,23,1.9>,<10,20,1.7>}
  380.  box {<8.2,23,-1.9>,<10,20,-1.7>}
  381.  cylinder {<9,22,-2.3>,<9,22,2.3>,.5}
  382.  texture {metal}
  383. }
  384.  
  385. #declare snorkel_b=
  386. union
  387. {
  388.  cylinder {<17,0,0>,<17,83,0>,2}
  389.  sphere {0,4 clipped_by {plane{-y,0}} translate <17,83,0>}
  390.  texture {metal}
  391. }
  392.  
  393. #declare periscopio_b=
  394. union
  395. {
  396.  cylinder {<10,0,0>,<10,80,0>,2}
  397.  sphere {<10,80,0>,2}
  398.  difference
  399.  {
  400.   cylinder {<5,80,0>,<10,80,0>,2}
  401.   cylinder {<2,80,0>,<10,80,0>,1.5}
  402.  }
  403.  sphere {0,1.5 scale <.2,1,1> translate <6,80,0> pigment {rgb 1} finish {reflection 1}}
  404.  texture {metal}
  405. }
  406.  
  407. #declare plataforma_b=
  408. union
  409. {
  410.  difference
  411.  {
  412.   superellipsoid {.05 scale <33,11,19> translate <65,11,0>}
  413.   box{<35,20,17>,<95,25,-17>}
  414.  }
  415.  sphere {<40,8,19>,1} sphere {<55,8,19>,1} sphere {<75,8,19>,1} sphere {<90,8,19>,1}
  416.  sphere {<40,8,-19>,1} sphere {<55,8,-19>,1} sphere {<75,8,-19>,1} sphere {<90,8,-19>,1}
  417.  box {<35,20,17>,<95,20.1,-17> pigment {rgb 0}}
  418.  texture {metal}
  419. }
  420.  
  421. #declare compuerta_izquierda_b=
  422. union
  423. {
  424.   box {<35.1,-2,16>,<94.9,0,6.9> texture {madera translate x*-50}}
  425.   box {<35.1,-2,7>,<94.9,0,1> texture {madera translate x*-150}}
  426.   cylinder {<40,0,0>,<45,0,0>,1}
  427.   cylinder {<80,0,0>,<85,0,0>,1}
  428.   cylinder {<45.1,0,0>,<50,0,0>,1}
  429.   cylinder {<85.1,0,0>,<90,0,0>,1}
  430.   box {<35.09,.05,5>,<94.91,-2.05,.05>}
  431.   sphere {<40,.05,2.5>,1}  sphere {<90,.05,2.5>,1}
  432.   sphere {<40,-2.05,2.5>,1}  sphere {<90,-2.05,2.5>,1}
  433.   box {<35.09,.05,12>,<94.91,-2.05,16.9>}
  434.   sphere {<45,.05,14.5>,1}  sphere {<85,.05,14.5>,1}
  435.   sphere {<45,-2.05,14.5>,1}  sphere {<85,-2.05,14.5>,1}
  436.   torus {1,.2 rotate z*90 translate <37,.05,14> }
  437.   torus {1,.2 rotate z*90 translate <92,.05,14> }
  438.   box {<67,-2,13>,<73,-5,15.5>} //cerradura
  439.   box {<68,-2.01,5>,<72,-4,16>} //cerradura
  440.   texture {metal}
  441.   #ifdef (compuertas_abiertas)
  442.     rotate x*180
  443.   #end
  444.   translate <0,22,-17>
  445. }
  446.  
  447. #declare compuerta_derecha_b=
  448. union
  449. {
  450.   box {<35.1,-2,-16>,<94.9,0,-6.9> texture {madera translate x*50}}
  451.   box {<35.1,-2,-7>,<94.9,0,-1> texture {madera translate x*150}}
  452.   cylinder {<40,0,0>,<45,0,0>,1}
  453.   cylinder {<80,0,0>,<85,0,0>,1}
  454.   cylinder {<45.1,0,0>,<50,0,0>,1}
  455.   cylinder {<85.1,0,0>,<90,0,0>,1}
  456.   box {<35.09,.05,-5>,<94.91,-2.05,-.05>}
  457.   sphere {<40,.05,-2.5>,1}  sphere {<90,.05,-2.5>,1}
  458.   sphere {<40,-2.05,-2.5>,1}  sphere {<90,-2.05,-2.5>,1}
  459.   box {<35.09,.05,-12>,<94.91,-2.05,-16.9>}
  460.   sphere {<45,.05,-14.5>,1}  sphere {<85,.05,-14.5>,1}
  461.   sphere {<45,-2.05,-14.5>,1}  sphere {<85,-2.05,-14.5>,1}
  462.   torus {1,.2 rotate z*90 translate <37,.05,-14> }
  463.   torus {1,.2 rotate z*90 translate <92,.05,-14> }
  464.   difference
  465.   {
  466.    box {<67,-2,-13>,<73,-5,-15.5>} //cerradura
  467.    box {<68,-2.01,-5>,<72,-4,-16>} //cerradura
  468.   }
  469.   texture {metal}
  470.   #ifdef (compuertas_abiertas)
  471.     rotate x*-180
  472.   #end
  473.   translate <0,22,17>
  474. }
  475.  
  476. #declare plataforma_canon=
  477. union
  478. {
  479.  box {<35.1,21,16.9>,<94.9,20,6> texture {madera translate x*-70}}
  480.  box {<35.1,21,5.9>,<94.9,20,.05> texture {madera translate x*-170}}
  481.  box {<35.1,21,-.05>,<94.9,20,-5.9> texture {madera translate x*170}}
  482.  box {<35.1,21,-16.9>,<94.9,20,-6> texture {madera translate x*70}}
  483.  box {<37,21.1,15>,<45,20,13>} box {<37,21.1,8>,<45,20,10>} box {<37,21.1,5>,<45,20,3>}
  484.  box {<37,21.1,-15>,<45,20,-13>} box {<37,21.1,-8>,<45,20,-10>} box {<37,21.1,-5>,<45,20,-3>}
  485.  box {<75,21.1,15>,<90,20,13>} box {<75,21.1,8>,<90,20,10>} box {<75,21.1,5>,<90,20,3>}
  486.  box {<75,21.1,-15>,<90,20,-13>} box {<75,21.1,-8>,<90,20,-10>} box {<75,21.1,-5>,<90,20,-3>}
  487.  texture {metal}
  488. }
  489.  
  490. #declare canon=
  491. union
  492. {
  493.  difference //plataforma 1
  494.  {
  495.   cone {<0,0,0>,14,<0,4.9,0>,13}
  496.   union
  497.   {
  498.    #declare aa=0
  499.    #while (aa<360)
  500.      box {<-20,-1,.05>,<20,6,-.05> rotate y*aa pigment {rgb 0}}
  501.      #declare aa=aa+30
  502.    #end
  503.   }
  504.   bounded_by {box {<-21,-2,-21>,<21,7,21>}}
  505.   texture {metal}
  506.  }
  507.  difference //plataforma 2
  508.  {
  509.   cylinder {<0,4.9,0>,<0,5,0>,11}
  510.   box {<-5,4,15>,<-5.1,6,-15>}  box {<5,4,15>,<5.1,6,-15>}
  511.   bounded_by {box {<-21,-2,-21>,<21,7,21>}}
  512.   texture {madera}
  513.  }
  514.  union //soporte A
  515.  {
  516.   difference
  517.   {
  518.    union
  519.    {
  520.     box {<-15,5,-15>,<5,10,-16>}
  521.     box {<-15,5,15>,<5,10,16>}
  522.    }
  523.    cylinder {<-7.5,7.5,-17>,<-7.5,7.5,17>,1.5}
  524.    cylinder {<-2.5,7.5,-17>,<-2.5,7.5,17>,1.5}
  525.    cylinder {<2.5,7.5,-17>,<2.5,7.5,17>,1.5}
  526.   }
  527.   difference
  528.   {
  529.    union
  530.    {
  531.     cylinder {<5,20,-15>,<5,20,-16>,15}
  532.     cylinder {<5,20,15>,<5,20,16>,15}
  533.    }
  534.    cylinder {<5,20,-17>,<5,20,17>,10}
  535.    box {<5,37,-17>,<-15,0,17>}
  536.    box {<-15,22,-17>,<21,40,17>}
  537.   }
  538.   cylinder {<17.5,20,-17>,<17.5,20,-15>,1}
  539.   cylinder {<17.5,20,17>,<17.5,20,15>,1}
  540.   difference
  541.   {
  542.    union
  543.    {
  544.     box {<-5,5,-15>,<-6,10,15>}
  545.     box {<5,5,-15>,<6,10,15>}
  546.     box {<-10.5,5,-15>,<-11.5,10,15>}
  547.    }
  548.    cylinder {<-12,7.5,-12.5>,<10,7.5,-12.5>,1.5}
  549.    cylinder {<-12,7.5,12.5>,<10,7.5,12.5>,1.5}
  550.    cylinder {<-12,7.5,-5>,<10,7.5,-5>,1.5}
  551.    cylinder {<-12,7.5,5>,<10,7.5,5>,1.5}
  552.   }
  553.  }
  554.  
  555.  difference //soporte bola
  556.  {
  557.   union
  558.   {
  559.    cylinder {<-1,20,0>,<1,20,0>,10.05}
  560.    cylinder {<-.5,5,0>,<.5,5,0>,10 clipped_by {box {<-1,5,11>,<1,40,-11>}}}
  561.   }
  562.   cylinder {<-1.1,20,0>,<1.1,20,0>,10}
  563.  }
  564.  
  565.  difference //soporte lente mayor
  566.  {
  567.    union
  568.    {
  569.     cylinder {<16,20,0>,<18,20,0>,15}
  570.     box {<16,21,16>,<18,19,-16>}
  571.     box {<16,36,1>,<18,4,-1>}
  572.    }
  573.    cylinder {<15,20,0>,<19,20,0>,14.5}
  574.    bounded_by { cylinder {<14,20,0>,<20,20,0>,17} }
  575.  }
  576.  
  577.  difference //soporte lente menor
  578.  {
  579.    union
  580.    {
  581.     cylinder {<33,20,0>,<35,20,0>,10}
  582.     box {<33,21,11>,<35,19,-11>}
  583.     box {<33,31,1>,<35,9,-1>}
  584.    }
  585.    cylinder {<32,20,0>,<36,20,0>,9.5}
  586.    bounded_by { cylinder {<31,20,0>,<37,20,0>,11} }
  587.  }
  588.  
  589.  union //union soportes de lentes
  590.  {
  591.   cylinder {<18,35.5,0>,<33,30.5,0>,.5}
  592.   cylinder {<18,4.5,0>,<33,9.5,0>,.5}
  593.   cylinder {<18,20,-15.5>,<33,20,-10.5>,.5}
  594.   cylinder {<18,20,15.5>,<33,20,10.5>,.5}
  595.  }
  596.  
  597.  union //cuadro soporte lente trasera
  598.  {
  599.   box {<-10,5,-8>,<-12,35,-7>}
  600.   box {<-10,34,-8>,<-12,35,8>}
  601.   box {<-10,5,8>,<-12,35,7>}
  602.   box {<-10,32,-5>,<-12,34,-7>}
  603.   box {<-10,32,5>,<-12,34,7>}
  604.   cylinder {<-10,33,-6>,<15,20,-15.5>,.5}
  605.   cylinder {<-10,33,6>,<15,20,15.5>,.5}
  606.  }
  607.  
  608.  difference //arco soporte lente trasera
  609.  {
  610.   difference
  611.   {
  612.    union
  613.    {
  614.     cylinder {<-11,20,-7>,<-11,20,-8>,15}
  615.     cylinder {<-11,20,7>,<-11,20,8>,15}
  616.    }
  617.    cylinder {<-11,20,9>,<-11,20,-9>,13}
  618.    box {<-11,36,-9>,<7,-4,9>}
  619.   }
  620.   #declare aa=15
  621.   #while (aa<180)
  622.     cylinder {<0,14,-9>,<0,14,9>,.75 rotate z*aa translate <-11,20,0>}
  623.     #declare aa=aa+15
  624.   #end
  625.  }
  626.  
  627.  union
  628.  {
  629.   difference //soporte y lente trasera
  630.   {
  631.    union
  632.    {
  633.     cylinder {<-13,0,0>,<-15,0,0>,6.5}
  634.     box {<-13,2,9>,<-15,-2,-9>}
  635.    }
  636.    cylinder {<-12,0,0>,<-16,0,0>,6}
  637.    bounded_by { cylinder {<-17,0,0>,<-11,0,0>,7} }
  638.   }
  639.   sphere //lente trasera
  640.   {
  641.    0,6
  642.    scale <.2,1,1>
  643.    pigment {rgb .9 transmit 1}
  644.    finish {specular 1 roughness .0005 reflection .5 refraction 1 ior 1.5}
  645.    translate <-14,0,0>
  646.   }
  647.   rotate z*-45 translate <-11,20,0>
  648.  }
  649.  
  650.  sphere //lente mayor
  651.  {
  652.   0,14.5
  653.   scale <.2,1,1>
  654.   pigment {rgb .9 transmit 1}
  655.   finish {specular 1 roughness .0005 reflection .5 refraction 1 ior 1.5}
  656.   translate <17,20,0>
  657.  }
  658.  
  659.  sphere //lente menor
  660.  {
  661.   0,9.5
  662.   scale <.2,1,1>
  663.   pigment {rgb .9 transmit 1}
  664.   finish {specular 1 roughness .0005 reflection .5 refraction 1 ior 1.5}
  665.   translate <34,20,0>
  666.  }
  667.  
  668.  sphere //esfera
  669.  {
  670.   0,1
  671.   hollow
  672.   no_shadow
  673.   pigment
  674.   {
  675.    marble
  676.    turbulence 3
  677.    color_map
  678.    {
  679.     [0 rgb 3]
  680.     [.1 rgbt .9]
  681.     [.5 rgbt .9]
  682.     [.51 rgb <3,3,0>]
  683.     [.52 rgbt .9]
  684.     [1 rgbt .9]
  685.    }
  686.   }
  687.   finish {ambient 1}
  688.   halo
  689.   {
  690.    linear
  691.    emitting
  692.    turbulence .01
  693.    jitter 2
  694.    color_map
  695.    {
  696.     [0 rgbt <0,1,0,1>]
  697.     [.1 blue 1]
  698.     [1 rgb <2,2,2>]
  699.    }
  700.   }
  701.   scale 10
  702.   translate <0,20,0>
  703.  }
  704.  
  705.  light_source {<0,20,0> rgb <.25,.25,3> fade_distance 50 fade_power 2}
  706.  #ifdef (disparo)
  707.   sphere
  708.   {
  709.    0,1
  710.    hollow
  711.    no_shadow
  712.    pigment {rgbt 1}
  713.    halo
  714.    {
  715.     linear
  716.     emitting
  717.     turbulence .5
  718.     lambda 5
  719.     jitter 10
  720.     color_map
  721.     {
  722.       [0 rgbt <0,1,0,1>]
  723.       [.1 blue 1 transmit .5]
  724.       [1 rgbt <2,2,2,.5>]
  725.     }
  726.     rotate z*90
  727.    }
  728.    scale 5 scale <2,1,1> translate <25,20,0>
  729.   }
  730.   cylinder
  731.   {
  732.    0,x*1,1
  733.    hollow
  734.    no_shadow
  735.    pigment {rgbt 1}
  736.    halo
  737.    {
  738.     linear
  739.     emitting
  740.     cylindrical_mapping
  741.     color_map
  742.     {
  743.       [0 rgbt <0,1,0,1>]
  744.       [.1 blue 1]
  745.       [1 rgb <2,2,2>]
  746.     }
  747.     rotate z*90
  748.    }
  749.    scale <disparo,2.5,2.5> translate <36,20,0>
  750.   }
  751.  #end
  752.  texture {laton}
  753. }
  754.  
  755. #declare ssb_mk2=
  756. union
  757. {
  758.  #declare aa=0
  759.  #while (aa<360)
  760.   object {lamina_casco_b rotate x*aa texture {madera translate (aa*35)*26}}
  761.   #declare aa=aa+30
  762.  #end
  763.  object {refuerzos_casco_b}
  764.  object {espolon_b}
  765.  object {aleta_b}
  766.  union //eje helice
  767.  {
  768.   cylinder {<180,0,0>,<200,0,0>,1}
  769.   sphere {<200,0,0>,1}
  770.   texture {metal}
  771.  }
  772.  object {helice_b}
  773.  object {torreta_b translate <20,20,0>}
  774.  object {escotilla_b translate x*110}
  775.  object {snorkel_b}
  776.  object {periscopio_b}
  777.  object {plataforma_b}
  778.  object {compuerta_derecha_b}
  779.  object {compuerta_izquierda_b}
  780.  object {plataforma_canon}
  781.  #ifdef (compuertas_abiertas)
  782.   object {canon scale .9 rotate y*rotacion translate <60,21,0>}
  783.  #end
  784.  #ifdef (estela)
  785.  union
  786.  {
  787.   sphere  {   0,1 hollow no_shadow pigment {rgbt 1}
  788.    halo   {  linear glowing turbulence .1  lambda 5  jitter 10
  789.     color_map  {    [0 rgbt 1] [.5 rgbt .5]   [1 rgb 2]  } }
  790.    clipped_by {plane {-x,0}} scale <7.5,1,1> }
  791.   sphere  {   0,1 hollow no_shadow pigment {rgbt 1}
  792.    halo   {  linear glowing turbulence .1  lambda 5  jitter 10
  793.     color_map  {    [0 rgbt 1] [.5 rgbt .5] [1 rgb 2]  } }
  794.    clipped_by {plane {x,0}}  }
  795.    scale 30  translate x*195
  796.   }
  797.  #end
  798. }
  799.